var LINHA_ADICAO;
var STORE_LINHAPEDIDO = Ext.create('Portal.Stores.LinhaPedidoStore');
var formulario = Ext.create('Ext.form.FieldSet', {
	id: 'formulario',
	columnWidth: 0.35,
	margin: '0 10 0 0',
	title:'Pedido de venda',
	layout: 'anchor',
	defaultType: 'textfield',
	items: [{
		fieldLabel: 'Numero',
		name: 'codigo',
		disabled: true
	},
		Ext.create('Portal.Forms.Cliente'),
		Ext.create('Portal.Forms.Transportadora'),
		Ext.create('Portal.Forms.CondicaoPagamento'),
	{
		maxLength: 50,
		fieldLabel: 'Observação',
		name: 'observacao',
	},{
		maxLength: 50,
		fieldLabel: 'Emails para XML',
		name: 'xml',
		emptyText: 'E-mails que receber&atilde;o o XML'
	},{
		maxLength: 50,
		fieldLabel: 'Verbas',
		name: 'verbas',
		emptyText: 'Verbas contratuais (pr&eacute;via autoriza&ccedil;&atilde;o)'
	},{
		maxLength: 50,
		fieldLabel: 'Logistica',
		name: 'logistica',
		emptyText: 'Paletiza&ccedil;&atilde;o, agendamento'
	},{
		xtype: 'fieldset',
		title:'Informações do produto',
		layout: 'anchor',
		defaultType: 'textfield',
		items: [{
			fieldLabel: 'Numero',
			name: 'codigo'
		},{
			fieldLabel: 'Numero',
			name: 'codigo'
		},{
			fieldLabel: 'Numero',
			name: 'codigo'
		},{
			fieldLabel: 'Numero',
			name: 'codigo'
		}]
	}],
});

var grid = Ext.create('Ext.grid.GridPanel', {
	columnWidth: 0.65,
	layout: 'column',
	features: [{
		ftype: 'summary'
	}],
	dockedItems: [{
		xtype: 'toolbar',
		items: [{
			xtype: 'textfield',
			fieldLabel: 'Codigo',
			labelAlign: 'right',
			labelWidth: '50px',
			minLenght: 6,
			maxLenght: 6,
			id: 'codigo',
			width: 105,
			enableKeyEvents: true,
			listeners: {
				keyup: {
					fn: function(cod) {
						if(cod.getValue().length == TAMANHO_PRODUTO) {
							var form = cod.up('form').getForm().getFields();

							Portal.Models.LinhaPedido.load(cod.getValue(), {
								url: 'PreencherLinha',
								success: function(linha) {
									LINHA_ADICAO = linha;
									Ext.getCmp('descricao').setValue(linha.get("descricao"));
									Ext.getCmp('qtd').focus();
								}
							});
						}
					}
				}
			}
		}, {
			xtype: 'textfield',
			id: 'descricao',
			fieldLabel: 'Descrição',
			labelAlign: 'right',
			labelWidth: '60px',
			width: 400
		}, {
			xtype: 'numberfield',
			fieldLabel: 'Desconto %',
			labelAlign: 'right',
			labelWidth: '80px',
			id: 'desconto',
			keyNavEnabled: false,
			mouseWheelEnabled: false,
			value: 0,
			minValue: 0,
			hideTrigger: true,
			width: 135,
			maxValue: 100,
			decimalSeparator: ','
		}, {
			xtype: 'numberfield',
			fieldLabel: 'Qtd',
			labelAlign: 'right',
			labelWidth: '50px',
			id: 'qtd',
			keyNavEnabled: false,
			mouseWheelEnabled: false,
			minValue: 1,
			hideTrigger: true,
			width: 110,
			enableKeyEvents: true,
			listeners: {
				keyup: {
					fn: function(c, e) {
						if(e.button == 12){ 
							if(Ext.getCmp('codigo').getValue() == '' ||
							Ext.getCmp('qtd').getValue() == '' || 
							Ext.getCmp('qtd').getValue() == 0) {
								Ext.Msg.alert('Atencao!', 'Há campos preenchidos incorretamente!');
								return;
							} else if(!Ext.getCmp('desconto').isValid()) {
								Ext.Msg.alert('Atencao!', 'Desconto invalido.', function(){
									Ext.getCmp('desconto').focus();
								});
								return;
							} else if(STORE_LINHAPEDIDO.getById(LINHA_ADICAO.get("codigo")) != null) {
								Ext.Msg.alert('Atencao!', 'Produto já cadastrado no pedido.', function(){
									Ext.getCmp('codigo').focus();
								});
							}else {
								LINHA_ADICAO.set("quantidade", c.getValue());
								LINHA_ADICAO.set("desconto", Ext.getCmp('desconto').getValue());
								LINHA_ADICAO.set("valorTotal", LINHA_ADICAO.get("quantidade") * ((LINHA_ADICAO.get("valorUnitario") * (1 - LINHA_ADICAO.get("desconto")/100)).toFixed(2)));											
								STORE_LINHAPEDIDO.add(LINHA_ADICAO);
								STORE_LINHAPEDIDO.sync();
								Ext.getCmp('codigo').focus();
							}
							Ext.getCmp('codigo').setValue("");
							Ext.getCmp('descricao').setValue("");
							Ext.getCmp('qtd').setValue("");
						}
					}
				}
			}
		}]
	}],
	store: STORE_LINHAPEDIDO,
	height: ALTURA,
	columns: [{
		text: 'C&oacute;digo',
		width: 75,
		sortable: true,
		dataIndex: 'codigo',
		align: 'center'
	}, {
		flex: 1,
		text: 'Desci&ccedil;&atilde;o',
		sortable: true,
		dataIndex: 'descricao'
	}, {
		text: 'Pre&ccedil;o',
		width: 75,
		sortable: true,
		dataIndex: 'valorUnitario',
		align: 'right',
		renderer: this.reais,
	}, {
		text: 'Quantidade',
		width: 75,
		sortable: true,
		dataIndex: 'quantidade',
		align: 'right',
		summaryType: 'sum'
	}, {
		text: 'Desconto',
		width: 75,
		sortable: true,
		dataIndex: 'desconto',
		align: 'right',
		renderer: this.porcentagem
	}, {
		text: 'Pre&ccedil;o Tot.',
		width: 75,
		sortable: true,
		renderer: this.reais,
		dataIndex: 'valorTotal',
		align: 'right',
		summaryType: 'sum'
	}, {
		text: 'IPI',
		width: 75,
		sortable: true,
		dataIndex: 'ipi',
		align: 'right',
		renderer: this.porcentagem
	}]
});

Ext.define('Portal.DigitarPedido', {
	extend: 'Ext.form.Panel',
    requires: ['Portal.Models.LinhaPedido'],

	xtype: 'form-grid',
	frame: true,
	title: 'Digitar pedido',
	bodyPadding: 5,
	layout: 'column',

	initComponent: function(){
		Ext.apply(this, {
			fieldDefaults: {
				labelAlign: 'left',
				labelWidth: 90,
				anchor: '100%',
				msgTarget: 'side'
			},
			items: [
			        formulario,
			        grid
			]
		});
		this.callParent();
	},
	reais: function(a, b, c) {
		return Ext.util.Format.currency(a, '', 2);
	},
	
	porcentagem: function(val){
		return val+ '%';
	}
});
/*
var spot = Ext.create('Ext.ux.Spotlight', {
	easing: 'easeOut'
});

if (typeof 'formulario' == 'string') {
    spot.show('formulario');
} else if (!'formulario' && spot.active) {
    spot.hide();
}

formulario.toggle('formulario' == formulario.id);*/